

#pragma once

#include <Ogre.h>

#include "IGameState.h"
#include "CameraController.h"

class MenuScreenState : 
	public IGameState
{
	Ogre::SceneManager * mSceneMgr;
	Ogre::Camera * mCamera;
	Ogre::Viewport * mViewport;

	boost::scoped_ptr<CameraControl> mCameraControl;

public:

	MenuScreenState(BaseGameManager & gameManager);

	void createScene();

	virtual const char * GetStateName();

	//! When we enter the login screen. Initializes the login screen scene.
	//!
	virtual void OnEnter();

	//! Creates the CEGUI menu.
	//!
	void createGUI();

	//! Called every frame.
	//!
	virtual bool OnFrameStarted(Ogre::FrameEvent const & evt);

	//! When we exit the login screen and we don't intend to return soon. 
	//! We destroy it completely to save resources.
	virtual void OnExit();

	virtual void OnKeyPressed(OIS::KeyEvent const & e);

	virtual void OnKeyReleased(OIS::KeyEvent const & e);

	virtual bool OnMousePressed(const OIS::MouseEvent &e, OIS::MouseButtonID id);

	virtual bool OnMouseReleased(const OIS::MouseEvent &e, OIS::MouseButtonID id);

	virtual bool OnMouseMoved(const OIS::MouseEvent &e);


	/* GUI events */

};